// axios.ts
import axios from 'axios';
import { v4 as uuidv4 } from 'uuid';

import type { AxiosInstance, AxiosRequestConfig, InternalAxiosRequestConfig, AxiosResponse } from 'axios';

const traceId = uuidv4();

// 创建 Axios 实例
const axiosInstance: AxiosInstance = axios.create({
    baseURL: import.meta.env.VITE_API_BASE_URL as string, // 根据实际情况配置 baseURL
    timeout: 50000 // 设置超时时间
});

// 请求拦截器
axiosInstance.interceptors.request.use(
    (config: InternalAxiosRequestConfig) => {
        // 在这里添加请求拦截逻辑，例如添加 token 等
        config.headers['Content-Type'] = 'application/json'; // 设置Content-Type
        config.headers['X-Trace-Id'] = traceId;
        return config;
    },
    error => {
        return Promise.reject(error);
    }
);

// 响应拦截器
axiosInstance.interceptors.response.use(
    (response: AxiosResponse) => {
        // 在这里添加响应拦截逻辑，例如处理错误信息等
        return response;
    },
    error => {
        return Promise.reject(error);
    }
);

export default axiosInstance;
